package com.pure.common.singleton;

/**
 * @description: 单例，内部类实现方式
 * @date: 2022-11-09 16:54
 * @since 1.2.0
 **/
public class SingletonInner {

    private SingletonInner() {
    }

    public static SingletonInner getInstance() {
        return Inner.instance;
    }

    /**
     * @description: 我们看到在SimpleSingleton5类中定义了一个静态的内部类Inner。
     * 在SimpleSingleton5类的getInstance方法中，返回的是内部类Inner的实例INSTANCE对象。
     * 只有在程序第一次调用getInstance方法时，虚拟机才加载Inner并实例化INSTANCE对象。
     * java内部机制保证了，只有一个线程可以获得对象锁，其他的线程必须等待，保证对象的唯一性。
     * @date 2022/11/9 4:58 下午
     * @since 1.2.1
     */
    private static class Inner {
        private static final SingletonInner instance = new SingletonInner();
    }

}
